A host computer system may run multiple virtual machines (VMs) that share common resources, such as physical storage. Physical storage used by the VMs typically is emulated so as to present virtual storage resources to the VMs. A virtualization intermediary manages interaction between VMs and physical storage. Some prior virtualization intermediaries “trap” (intercept) virtual storage requests issued by individual VMs and to thereby intervene in the storage access requests so as to redirect the requests from virtual targets to physical targets. Such earlier virtualization intermediary uses trap handlers during emulation to redirect IO commands to prevent storage access violations. However, this emulation can be expensive in terms of instructions processed. Overall performance may decline when many VMs seek to access physical storage at the same time. The many storage requests can result in data access delays due to the compute cycles required by the virtualization intermediary to trap and translate simultaneous data requests from many VMs.
One solution to this problem has been proposed in the Single Root Virtualization I/O and Sharing Specification, Revision 1.0, Sep. 11, 2007 (PCI-SIG SR-IOV) specification. The PCI-SIG SR-IOV specification proposes providing each of one or more VMs with direct access to physical storage through its own storage adapter instance as a designated virtual function (VF) running on a physical storage adapter. This avoids the need for heavy intervention by the virtualization intermediary to gain access to physical storage.
Live migration typically involves the ability to move a VM from a source physical machine to a destination physical machine, possibly one with different IO adapter hardware, at almost any point in a VM's work flow without affecting correctness of processing by the VM and without significantly affecting the availability of the VM. In general, migration involves a virtualization intermediary intervening to suspend a VM's execution at any instruction boundary and to control the flow of the VM's IO during the migration process. The virtualization intermediary also tracks and quiesces IO initiated by the VM on the source migration host and resumes the IO on the destination migration host. However, direct access by a VM to physical storage that bypasses intervention of the virtualization intermediary complicates live migration of a virtual machine across physical machines, since the virtualization intermediary does not intervene in VM IO operations.